

#ifndef LIST_NODE_H__
#define LIST_NODE_H__

#include <stdint.h> 
#include <stdbool.h> 
#include <string.h> 

typedef struct list_node_s  list_node_t;

struct list_node_s
{
    list_node_t*    p_next;
};

list_node_t* list_node_get_at(list_node_t** pp_head, int idx);

list_node_t* list_node_get_last(list_node_t** pp_head);

void list_node_add(list_node_t** pp_head, list_node_t* p_new);

uint32_t list_node_remove( list_node_t** pp_head, list_node_t* p_node);

static inline void list_node_insert( list_node_t* p_node, list_node_t* p_new)
{
    if( p_node != p_new)
    {
        p_new->p_next = p_node->p_next;
        p_node->p_next = p_new;
    }
}

uint32_t list_node_size_get(list_node_t* p_head);


#endif 
